【レポート】最新情報:Snowpipe Streaming with Dynamic Tables – Snowflake Data Cloud World Tour Tokyo #SnowflakeDB
こんにちは、スズです。
2023年09月08日(金)、ANAインターコンチネンタル東京にて、Snowflake社による日本最大級のデータイベント「Snowflake Data Cloud World Tour Tokyo」が開催されました。
本記事では、『最新情報:Snowpipe Streaming with Dynamic Tables』のセッションレポートをお届けします。
セッション概要
- スピーカー
- Snowflake株式会社 セールスエンジニアリング本部 シニアセールスエンジニア 加藤 涼太氏
Snowflakeで新たに利用可能になったStreamingデータを扱うためのSnowpipe Streamingと、より簡単にデータパイプラインを作成可能にするDynamic Tables についてデモンストレーションを交えてご紹介します。
引用元:Data Cloud World Tour - Tokyo - Agenda
セッション内容
ストリーミングデータとは何か
- ストリーミングデータとして有名なところではIoTデータ、セキュリティ関連のログデータなど
- データソースは多岐にわたり、Snowflakeも多岐にわたるデータの対応を進めている
- ストリーミングデータの特徴は、数秒などの細かいレンジでの対応が必要なところが特徴
ストリーミング≠瞬時
- データの価値は鮮度で決まる
- データの価値がどこにあるのかを表現したもの
- リアルタイムになるとシステムの構築にコストがかかる
- ビジネス的なROIが得られるのかというと難しい
- ビジネスニーズに合った形でデータを高速に取り込む
出典:Time Value of Data: The Summit of Now and the Peak of Soon After – Data and Coffee
Snowflakeによるストリーミング
- 問題点
- データを増分などで管理しながら、データの変更があった場合にパイプラインを維持しながら処理することは難しい
- Snowpipeストリーミングとダイナミックテーブルで、パイプラインを簡素化し、コスト効率を高く、Snowflakeのネイティブなガバナンスやセキュリティ機能を組み合わせながら、データ活用を進めていくことができる
推奨アーキテクチャ
- 一番左にデータソースに当たるもの
- 取り込み、変換、提供がSnowflakeの部分
- 本日主に扱うのはデータを取り込む部分にあたるSnowpipeストリーミングと、変換部分にあたるダイナミックテーブル
取り込みオプション
- COPY
- バルクロード
- データを一気に取り込む
- Snowpipe
- ファイルベースでデータが追加されたことを検知
- イベント検知でSnowflakeにデータを取り込む
- COPY文に比べるとレイテンシーが小さい
- サーバーレスという特徴がある
- Snowpipeストリーミング
- ほぼリアルタイムで行セットの取り込み
- クライアントのアプリケーションからJava SDKからのデータロード
- ファイルで取り込むものではないのでアプリケーションとの親和性が高い
- 数秒レベルのレーテンシー
Snowpipe:ファイルとストリーミング
- SnowpipeとSnowpipeストリーミング、どちらもSnowflakeのマネージドでリソースを使うことができる
- Snowpipeはファイルベース
Snowpipeストリーミング
- Java SDKによるテーブルへの取り込み
- ファイルを生成して取り込む必要がない
- レイテンシーが低く、高スループット
- 低コスト
ストリーミングユースケース
- コネクタを使った形でのデータの挿入
- Kafka/Kinesis、Java SDKやKafkaのコネクタからデータを挿入
- Snowflakeのアプリを利用してログアナリティクスにつなげていく
- IoTやデバイスからのログをビジネスに役立てる
ダイナミックテーブルの概要
DYNAMIC TABLE
でダイナミックテーブルであることを宣言LAG
が自動更新を行う頻度- どのくらい前のデータを参照させるのかという指定
SELECT
でテーブルを参照
タスク&ストリームとダイナミックテーブル
- 以前から搭載されているタスク&ストリームを使うことで、同じことを実現可能
- 作る場合の開発コストに差がある
- タスク&ストリームはSnowflakeのCDCの機能
- CDCの状態を見て、命令的に宣言をしていく必要がある
主な特徴
- ダイナミックテーブルは宣言型
SELECT
の中に宣言していくことでテーブルを作ることができる
- SQLをサポートしている
- ほとんどのパイプラインのデータの変換の定義をダイナミックテーブルで行うことができる
最新情報
- ダイナミックテーブルはまだパブリックプレビューで機能評価が行われている
- SnowsightのUI上でダイナミックテーブルの状態やDAG処理の結果などを見ることが可能
- クエリサポートの強化として日付関数やUDFの利用が可能
- パイプラインの制御として一時的な停止や再開が可能
更新の制御
- ダイナミックテーブルを止めていた場合に
REFRESH
をすることで、定義していたDAGを時間と関係なく再出発することができる - ダイナミックテーブルを停止、開始することができるコマンドが実装された
- ステージングテーブルをソースとして、ダイナミックテーブルを構成
- 上流にカスケードされて、上位のダイナミックテーブルの更新が走って、最新の状態で末端のダイナミックテーブルまで更新がかかるようになっている
- 途中のダイナミックテーブルで一時停止を行う
- 上のダイナミックテーブルが止まっているので下のダイナミックテーブルも止まっている
- 下流にカスケードするという動作も実行できるようになっている
- 必要な時に必要な動作をさせられる
- 運用負荷を減らす
可観測性
- SnowsightのUIの中で、ダイナミックテーブルの状態、処理の時間、成功/失敗などを見ることができるようになっている
- テーブル同士の関係性を表示するグラフィカルなUIも持っている
最後に
「Snowflake Data Cloud World Tour Tokyo」のセッション『最新情報:Snowpipe Streaming with Dynamic Tables』のレポートをお届けしました。